package it.azienda.stampe.view;

import it.azienda.framework.utilita.Utilita;
import it.azienda.framework.view.Dettaglio;
import it.azienda.managerworkstandard.modello.BeanCliente;
import it.azienda.stampe.parametri.BeanStampaScadenzeFattureClienti;
import java.util.HashMap;
import javax.faces.component.html.HtmlForm;
import javax.faces.context.FacesContext;

public class DettaglioStampaScadenzeFattureClienti extends Dettaglio {
    private HtmlForm form = new HtmlForm();
    private BeanStampaScadenzeFattureClienti beanStampaScadenzeFattureClienti;
    
    public void setBeanStampaScadenzeFattureClienti(BeanStampaScadenzeFattureClienti beanStampaScadenzeFattureClienti) {
        setObj(beanStampaScadenzeFattureClienti);
        this.beanStampaScadenzeFattureClienti = beanStampaScadenzeFattureClienti;
    }
    
    public BeanStampaScadenzeFattureClienti getBeanStampaScadenzeFattureClienti(){
        return (BeanStampaScadenzeFattureClienti)getObj();
    }
    
    public HtmlForm getForm() {
        form = (HtmlForm) Utilita.getSession().getAttribute("form");
        if (form == null) {
            form = new HtmlForm();
        }
        FacesContext ctx = FacesContext.getCurrentInstance();
        beanStampaScadenzeFattureClienti =(BeanStampaScadenzeFattureClienti) ctx.getExternalContext().getRequestMap().get("beanStampaScadenzeFattureClienti");
        controlloDopoSalvataggio(beanStampaScadenzeFattureClienti);
        Utilita.getSession().removeAttribute("form");
        return form;
    }
    
    public void setForm(HtmlForm form) {
        setFormObject(form);
        this.form = form;
        Utilita.getSession().setAttribute("form",form);
    }
    
    public void controlloDopoSalvataggio(Object obj) {
        BeanStampaScadenzeFattureClienti StampaScadenzeFattureClienti=(BeanStampaScadenzeFattureClienti)obj;
        if(StampaScadenzeFattureClienti.getBeanCliente()==null){
            StampaScadenzeFattureClienti.setBeanCliente(new BeanCliente());
        }
    }
    
    public void stampaJasper() {
        FacesContext ctx = FacesContext.getCurrentInstance();
        BeanStampaScadenzeFattureClienti beanStampa = (BeanStampaScadenzeFattureClienti) ctx.getApplication().getVariableResolver().resolveVariable(ctx,"beanStampaScadenzeFattureClienti");
        try{
            boolean verifica=false;
            
            String queryNuova = "select * from fatture, clienti" +
                    " where (fatture.data1 is not null or fatture.data2 is not null or fatture.data3 is not null or fatture.data4 is not null)" +
                    " and fatture.cliente_id = clienti.id ";                    

            HashMap parametri = new HashMap();
            
            
            if(beanStampa.getIdCliente() != null){
                queryNuova+=" and clienti.id = $P{idCliente}";
                parametri.put("idCliente",beanStampa.getIdCliente());
                verifica = true;
            }             
            
            if(beanStampa.getDataDa() != null && beanStampa.getDataA() != null){
                queryNuova+=" and fatture.data between $P{dataDa} and $P{dataA}";
                parametri.put("dataDa",beanStampa.getDataDa());
                parametri.put("dataA",beanStampa.getDataA());
                verifica = true;
            }
            /*
            if(beanStampa.getTipoRicerca().intValue()==1){
                queryNuova+=" and (fatture.pagato1 = $P{pagatoSN} or fatture.pagato2 = $P{pagatoSN} or fatture.pagato3 = $P{pagatoSN} or fatture.pagato4 = $P{pagatoSN})";
                parametri.put("pagatoSN","S");
                verifica = true;
            }else if(beanStampa.getTipoRicerca().intValue()==2){
                queryNuova+=" and (fatture.pagato1 = $P{pagatoSN} or fatture.pagato2 = $P{pagatoSN} or fatture.pagato3 = $P{pagatoSN} or fatture.pagato4 = $P{pagatoSN})";
                parametri.put("pagatoSN","N");
                verifica = true;
            }*/            
            if(verifica){
                queryNuova += " order by clienti.ragioneSociale";
                beanStampa.setParametriStampa(parametri);
                beanStampa.setQueryNuova(queryNuova);
            }
            
            super.setBeanStampa(beanStampa);
            super.stampaJasper();
        }catch(Exception ex){
        }finally {
            Utilita.getRequest().setAttribute("beanStampaScadenzeFattureClienti",beanStampa);
        }
    }
    
}